var path = require('path')
const OSS = require('ali-oss')


const client = new OSS({
    // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
    region: 'oss-cn-hangzhou',
    // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    accessKeyId: 'LTAI5tGKFtePYpS5TokfonHr',
    accessKeySecret: 'rpeRmTzKkoBEXgwff8inNegDTYwEYU',
    // 填写Bucket名称。
    bucket: 'helen-files-1',
  });
  
  // 自定义请求头
  const headers = {
    // 指定Object的存储类型。
    'x-oss-storage-class': 'Standard',
    // 指定Object的访问权限。
    'x-oss-object-acl': 'private',
    // 通过文件URL访问文件时，指定以附件形式下载文件，下载后的文件名称定义为example.txt。
    'Content-Disposition': 'attachment; filename="example.txt"',
    // 设置Object的标签，可同时设置多个标签。
    'x-oss-tagging': 'Tag1=1&Tag2=2',
    // 指定PutObject操作时是否覆盖同名目标Object。此处设置为true，表示禁止覆盖同名Object。
    'x-oss-forbid-overwrite': 'true',
  };

class UploadCtl{
    upload(ctx){
        var file=ctx.request.files.file
        // path.basename 接受一个绝对路径并返回一个文件名和扩展名
        // basename文件名和扩展名
        console.log(file)
        var basename=path.basename(file.path)
        // 文件名和扩展名：uploads/upload_85088480c0ad4b322efa194fb17e14c6.png
        // ctx.origin：http://localhost:3000
        // 访问地址：http://localhost:3000/uploads/upload_2886e1489600a238d51ecaba6bc54a06.png
        ctx.body={path:`${ctx.origin}/uploads/${basename}`}
    }

    //     AccessKey ID
    // LTAI5tGKFtePYpS5TokfonHr

    // AccessKey Secret
    // rpeRmTzKkoBEXgwff8inNegDTYwEYU
    async put(ctx) {
        var file=ctx.request.files.file
        // try {
        //   // 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
        //   // 如果本地文件的完整路径中未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
        
        // } catch (e) {
        //     console.log(e);
        //     ctx.body = e
        // }
        // ctx.body = file
        var basename=path.basename(file.path)
        const result = await client.put(file.name,file.path, headers)
        // 自定义headers;
        //   console.log(result);
          ctx.body = result
      }
}
module.exports=new UploadCtl()
